package com.cw.DesignModel23.Behavioral.ObserverPattern;

import java.util.Observable;

/**
 * 被观察的主题对象
 *      JDK 提供了对观察者模式的支持 , 被观察者可以继承 Observable 类
 *
 * 被观察对象 继承 Observable 类
 */
public class Game extends Observable {
    private String name;

    public Game(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    /**
     * 用户提交问题
     * @param game
     * @param question
     */
    public void produceQuestion(Game game, Question question) {
        System.out.println(question.getUserName() +
                " 在 " + game.name + " 游戏中提交问题 : " + question.getContent());

        // 该方法是 Observable 提供的方法
        // 将 private boolean changed = false 成员变量设置为 true
        // 代表 被观察者 的状态发生了改变
        setChanged();

        // 通知 观察者
        notifyObservers(question);
    }
}

